#ifndef LINKED_TO_MAIN


#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <time.h>
#include <stdlib.h>
#include <string>
#include <cstring>
#include <vector>
#include <sstream>
#include <exception>
#include <limits.h>
#include <sstream>
#include <cstdlib>
//
#include <sys/mman.h>
#include <sys/stat.h>        /* For mode constants */
#include <fcntl.h>           /* For O_* constants */
#include <sys/sem.h>    //semafory
//

#define    LINPUT 73 //I
#define    LOUTPUT 79 //O
#define    LREAD 82 //R

#define    READ    0
#define    WRITE    1

#define SIZE_PIPE_DATA 512

struct Element
{
    Element(std::string elementString)
    {
        eString = elementString;
        isInteger = false;
    }
    Element(int elementInteger)
    {
        eInteger = elementInteger;
        isInteger = true;
    }
    int operator==(const Element & other) const
    {
        return (eString == other.eString && eInteger == other.eInteger && isInteger == other.isInteger);
    }
    std::string eString;
    int eInteger;
    bool isInteger;
};
typedef std::vector<Element> Tuple;

#endif

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include <fstream>
#include <iostream>
#include <list>

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#define NUM_REQUESTS_CHILD 5

//global variables
const int maxTupleSize=4;
const int maxIntegerValue=100;
const int maxLengthString=10;
const int startupCode_FromFile=0;
const int startupCode_Automatic=1;

//
extern int consoleSemaphore;
extern sembuf sembufWait, sembufPost;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*!
 * startupCode -> startupCode_Automatic lub startupCode_FromFile(wtedy trzeba podać plik skad gdzie jest lista zdefiniowanych requstów)
 */
void childFunction(int numChild, int* requestPipe,int* answerPipe, int startupCode,  std::ifstream* sourceRequestFile=NULL);

